home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / tool / cdlist / cdlist.bas next >
BASIC Source File  |  1994-11-16  |  34KB  |  927 lines

  1. 10 '
  2. 20 '<<<<<  .CDLファイルエディタ        >>>>>
  3. 30 '<<<<<      CDLister V1.2    >>>>>
  4. 40 '<<<<< programed by KIM(Takefumi Kimura) 1994 >>>>>
  5. 50 '
  6. 60 *INIT
  7. 70 CLEAR:CLEAR,,,200000:CONSOLE 0,24,2
  8. 80 SCREEN 0:SCREEN@0:CLS
  9. 90 ON ERROR GOTO *E_TRAP
  10. 100 DIM TITLE$(10),ART$(10),LAB$(10),DT$(10),SN(10),TIF$(10),WRD$(10)
  11. 110 DIM TM$(10,99),SNAME$(10,99),PT1%(29000),PT3%(23000)
  12. 120 PLAYCD=0:VER$="1.2"
  13. 130 LOAD@"CDLVP.TIF"
  14. 140 SYMBOL(25,44),"CDLister V"+VER$+"  by KIM",1,1,%6
  15. 150 OPEN "I",#1,"CDLVHIS.DAT"
  16. 160 LINE INPUT#1,FILE$
  17. 170 CLOSE
  18. 180 *MOUSE_INIT
  19. 190 MOUSE 0
  20. 200 MOUSE 1,320,240,1
  21. 210 '
  22. 220 GOSUB *LOAD
  23. 230 '
  24. 240 *MAIN
  25. 250 WHILE MOUSE(2,0)=0
  26. 260  A%=CDS%(5)
  27. 270  B%=CDS%(6):C%=CDS%(7)
  28. 280  IF PLAYCD=1 THEN
  29. 290   CDSTAT CDS%
  30. 300   IF A%<>CDS%(5) THEN 
  31. 310    IF CDS%(5)=0 THEN GOSUB *CDSTOP:GOTO 380
  32. 320    PLAYCDN=CDS%(5):GOSUB *SYMBOL_PLAYCD
  33. 330   ENDIF
  34. 340   IF NOT(B%=CDS%(6) AND C%=CDS%(7)) THEN 
  35. 350    STIMEM=CDS%(6):STIMES=CDS%(7):GOSUB *SYMBOL_STIME
  36. 360   ENDIF
  37. 370  ENDIF
  38. 380 WEND
  39. 390 MX=MOUSE(0):MY=MOUSE(1)
  40. 400 FOR Z=0 TO 1
  41. 410  IF MX>528+Z*48 AND MX<576+Z*48 AND MY>160 AND MY<176 THEN
  42. 420   MOUSE 1,,,0:ON Z+1 GOSUB *S_ROLL_U,*S_ROLL_D:MOUSE 1,,,1
  43. 430  ENDIF
  44. 440  IF MX>16+Z*48 AND MX<64+Z*48 AND MY>224 AND MY<240 THEN
  45. 450   MOUSE 1,,,0:ON Z+1 GOSUB *CDBACK,*CDNEXT:MOUSE 1,,,1
  46. 460  ENDIF
  47. 470  IF MX>16+Z*48 AND MX<64+Z*48 AND MY>240 AND MY<256 THEN
  48. 480   MOUSE 1,,,0:ON Z+1 GOSUB *CDREW,*CDFF:MOUSE 1,,,1
  49. 490  ENDIF
  50. 500  IF MX>272 AND MX<624 AND MY>40+Z*24 AND MY<64+Z*24 THEN
  51. 510   MOUSE 1,,,0:ON Z+1 GOSUB *EDIT_TITLE,*EDIT_ART:MOUSE 1,,,1
  52. 520  ENDIF
  53. 530  IF MX>272 AND MX<400 AND MY>88+Z*24 AND MY<112+Z*24 THEN
  54. 540   MOUSE 1,,,0:ON Z+1 GOSUB *EDIT_DT,*EDIT_TIF:MOUSE 1,,,1
  55. 550  ENDIF
  56. 560  IF MX>464 AND MX<624 AND MY>88+Z*24 AND MY<112+Z*24 THEN
  57. 570   MOUSE 1,,,0:ON Z+1 GOSUB *EDIT_LAB,*EDIT_WRD:MOUSE 1,,,1
  58. 580  ENDIF
  59. 590 NEXT
  60. 600 FOR Z=0 TO 11
  61. 610  IF Z+CS>SN(CCD) THEN 650
  62. 620  IF MX>224 AND MX<624 AND MY>176+Z*24 AND MY<200+Z*24 THEN
  63. 630   CES=Z:MOUSE 1,,,0:GOSUB *EDIT_SNAME:MOUSE 1,,,1
  64. 640  ENDIF
  65. 650 NEXT
  66. 660 IF MX>112 AND MX<160 AND MY>224 AND MY<248 THEN GOSUB *CDPLAY
  67. 670 IF MX>160 AND MX<200 AND MY>224 AND MY<248 THEN GOSUB *CDSTOP
  68. 680 IF MX>616 AND MX<641 AND MY>-1 AND MY<24 THEN GOSUB *EXIT
  69. 690 FOR Z=0 TO 4
  70. 700  IF MX>64+Z*80 AND MX<144+Z*80 AND MY>-1 AND MY<24 THEN
  71. 710   ON Z+1 GOSUB *TITLE_SELECT,*LOAD,*SAVE,*TITLE_SORT,*TITLE_ADD
  72. 720  ENDIF
  73. 730 NEXT
  74. 740 IF MX>-1 AND MX<64 AND MY>-1 AND MY<24 THEN GOSUB *COPYRIGHT
  75. 750 GOTO *MAIN
  76. 760 *DISPLAY_CT
  77. 770 LINE(130,116)-(208,132),PSET,0,BF
  78. 780 A1$=STR$(CCD):A2$=STR$(CDN)
  79. 790 SYMBOL(136,116),RIGHT$("000"+RIGHT$(A1$,LEN(A1$)-1),4)+"/"+RIGHT$("000"+RIGHT$(A2$,LEN(A2$)-1),4),1,1,%12
  80. 800 RETURN
  81. 810 *DISPLAY_CDDATA
  82. 820 FOR I=0 TO 1
  83. 830  LINE(276,44+24*I)-(616,60+24*I),PSET,%1,BF
  84. 840  LINE(276,92+24*I)-(392,108+24*I),PSET,%1,BF
  85. 850  LINE(472,92+24*I)-(616,108+24*I),PSET,%1,BF
  86. 860 NEXT
  87. 870 LINE(352,140)-(392,156),PSET,%1,BF
  88. 880 LINE(472,140)-(488,156),PSET,%1,BF
  89. 890 A3=0
  90. 900 FOR I=1 TO SN(CCD)
  91. 910  A1=VAL(LEFT$(TM$(CCD,I),2)):A2=VAL(RIGHT$(TM$(CCD,I),2))
  92. 920  A3=A3+A1*60+A2
  93. 930 NEXT
  94. 940 TM1$=STR$(INT(A3/60)):TM2$=STR$(A3 MOD 60)
  95. 950 TMCD$=RIGHT$("00"+RIGHT$(TM1$,LEN(TM1$)-1),2)+"'"+RIGHT$("00"+RIGHT$(TM2$,LEN(TM2$)-1),2)
  96. 960 SYMBOL(448-LEN(TITLE$(CCD))*4,44),TITLE$(CCD),1,1,7
  97. 970 SYMBOL(448-LEN(ART$(CCD))*4,68),ART$(CCD),1,1,7
  98. 980 SYMBOL(336-LEN(DT$(CCD))*4,92),DT$(CCD),1,1,7
  99. 990 SYMBOL(336-LEN(TIF$(CCD))*4,116),TIF$(CCD),1,1,7
  100. 1000 IF LEN(LAB$(CCD))>18 THEN A$=LEFT$(LAB$(CCD),18) ELSE A$=LAB$(CCD)
  101. 1010 SYMBOL(544-LEN(A$)*4,92),A$,1,1,7
  102. 1020 SYMBOL(544-LEN(WRD$(CCD))*4,116),WRD$(CCD),1,1,7
  103. 1030 SYMBOL(352,140),TMCD$,1,1,7
  104. 1040 SYMBOL(464,140),STR$(SN(CCD)),1,1,7
  105. 1050 RETURN
  106. 1060 *DISPLAY_SNAMES
  107. 1070 FOR I=0 TO 11
  108. 1080  LINE(226,180+I*24)-(622,196+I*24),PSET,%1,BF
  109. 1090  IF I+1>SN(CCD) THEN 1130
  110. 1100  SYMBOL(226-8,180+I*24),STR$(I+1),1,1,%6
  111. 1110  SYMBOL(412-LEN(SNAME$(CCD,I+1))*4,180+I*24),SNAME$(CCD,I+1),1,1,7
  112. 1120  SYMBOL(583,180+I*24),TM$(CCD,I+1),1,1,%7
  113. 1130 NEXT
  114. 1140 RETURN
  115. 1150 *LOAD
  116. 1160 CONNECT(145,23)-(145,1)-(223,1),%13
  117. 1170 CONNECT(146,23)-(223,23)-(223,2),%14
  118. 1180 WHILE MOUSE(2,0):WEND
  119. 1190 CONNECT(145,23)-(145,1)-(223,1),%14
  120. 1200 CONNECT(146,23)-(223,23)-(223,2),%13
  121. 1210 GOSUB *FILE_IP_P
  122. 1220 SYMBOL(144,200),".CDLファイル読込",1,1,7
  123. 1230 GOSUB *FILE_IP_L
  124. 1240 OPEN "I",#1,FILE$
  125. 1250 MOUSE 1,,,0
  126. 1260 INPUT#1,A$:BCDN=CDN:CDN=VAL(A$)
  127. 1270 IF CDN=0 THEN CDN=BCDN:GOTO 1580
  128. 1280 ERASE TITLE$,ART$,LAB$,DT$,SN,TIF$,WRD$,TM$,SNAME$
  129. 1290 DIM TITLE$(CDN),ART$(CDN),LAB$(CDN),DT$(CDN),SN(CDN),TIF$(CDN),WRD$(CDN)
  130. 1300 DIM TM$(CDN,99),SNAME$(CDN,99)
  131. 1310 GET@A(280,220)-(360,260),PT3%
  132. 1320 LINE(280,220)-(360,260),PSET,7,BF,%1
  133. 1330 SYMBOL(320,232),"0%",1,1,7
  134. 1340 FOR I=1 TO CDN
  135. 1350  INPUT#1,DUMMY$
  136. 1360  LINE INPUT#1,TITLE$(I)
  137. 1370  IF KRIGHT$(TITLE$(I),1)=" " THEN TITLE$(I)=KLEFT$(TITLE$(I),KLEN(TITLE$(I))-1):GOTO 1370
  138. 1380  LINE INPUT#1,ART$(I)
  139. 1390  IF KRIGHT$(ART$(I),1)=" " THEN ART$(I)=KLEFT$(ART$(I),KLEN(ART$(I))-1):GOTO 1390
  140. 1400  LINE INPUT#1,LAB$(I)
  141. 1410  IF KRIGHT$(LAB$(I),1)=" " THEN LAB$(I)=KLEFT$(LAB$(I),KLEN(LAB$(I))-1):GOTO 1410
  142. 1420  LINE INPUT#1,DT$(I)
  143. 1430  IF KRIGHT$(DT$(I),1)=" " THEN DT$(I)=KLEFT$(DT$(I),KLEN(DT$(I))-1):GOTO 1430
  144. 1440  INPUT#1,SN(I)
  145. 1450  LINE INPUT#1,TIF$(I)
  146. 1460  IF KRIGHT$(TIF$(I),1)=" " THEN TIF$(I)=KLEFT$(TIF$(I),KLEN(TIF$(I))-1):GOTO 1460
  147. 1470  LINE INPUT#1,WRD$(I)
  148. 1480  IF KRIGHT$(WRD$(I),1)=" " THEN WRD$(I)=KLEFT$(WRD$(I),KLEN(WRD$(I))-1):GOTO 1480
  149. 1490  FOR J=1 TO SN(I)
  150. 1500   LINE INPUT#1,TM$(I,J)
  151. 1510   LINE INPUT#1,SNAME$(I,J)
  152. 1520   IF KRIGHT$(SNAME$(I,J),1)=" " THEN SNAME$(I,J)=KLEFT$(SNAME$(I,J),KLEN(SNAME$(I,J))-1):GOTO 1520
  153. 1530  NEXT J
  154. 1540  LINE(304,232)-(336,248),PSET,%1,BF
  155. 1550  SYMBOL(304,232),RIGHT$(" "+STR$(INT(I/CDN*100)),3)+"%",1,1,7
  156. 1560 NEXT I
  157. 1570 PUT@A(280,220)-(360,260),PT3%
  158. 1580 CLOSE
  159. 1590 LINE(56,84)-(200,100),PSET,0,BF
  160. 1600 SYMBOL(56,84),LEFT$(FILE$+SPACE$(19),19),1,1,%12
  161. 1610 CCD=1:CLCD=CCD:CS=1
  162. 1620 GOSUB *DISPLAY_CT:GOSUB *DISPLAY_CDDATA
  163. 1630 GOSUB *DISPLAY_SNAMES
  164. 1640 MOUSE 1,,,1
  165. 1650 RETURN
  166. 1660 *FILE_IP_P
  167. 1670 GOSUB *WINDOW
  168. 1680 LINE(144,232)-(498,256),PSET,%13,BF
  169. 1690 IP_WX=152:IP_WY=236:IP_MAX=42:IP_CL=13:IP_NAME$=FILE$
  170. 1700 GOSUB *IP_SET
  171. 1710 RETURN
  172. 1720 *FILE_IP_L
  173. 1730 M=0
  174. 1740 WHILE M=0
  175. 1750  M=-MOUSE(2,0)-MOUSE(2,1)*2
  176. 1760  GOSUB *IP_MAIN
  177. 1770 WEND
  178. 1780 IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:RETURN 1650
  179. 1790 MX=MOUSE(0):MY=MOUSE(1)
  180. 1800 GOSUB *W_CHECK_YN
  181. 1810 IF YN=1 THEN 1840
  182. 1820 IF YN=2 THEN PUT@A(128,128)-(512,352),PT3%:RETURN 1650
  183. 1830 GOTO *FILE_IP_L
  184. 1840 FILE$=IP_NAME$
  185. 1850 PUT@A(128,128)-(512,352),PT3%
  186. 1860 A$=RIGHT$(FILE$,4):IF A$<>".CDL" AND A$<>".cdl" AND A$=".BAK" AND A$=".bak" THEN FILE$=FILE$+".CDL"
  187. 1870 RETURN
  188. 1880 *S_ROLL_U
  189. 1890 CONNECT(529,175)-(529,161)-(575,161),%13
  190. 1900 CONNECT(530,175)-(575,175)-(575,162),%14
  191. 1910 IF CS=<1 THEN 1990
  192. 1920 CS=CS-1
  193. 1930 GET@A(224,176)-(624,440),PT1%
  194. 1940 PUT@A(224,200)-(624,464),PT1%
  195. 1950 LINE(226,180)-(622,196),PSET,%1,BF
  196. 1960 SYMBOL(226-8,180),STR$(CS),1,1,%6
  197. 1970 SYMBOL(412-LEN(SNAME$(CCD,CS))*4,180),SNAME$(CCD,CS),1,1,7
  198. 1980 SYMBOL(583,180),TM$(CCD,CS),1,1,%7
  199. 1990 CONNECT(529,175)-(529,161)-(575,161),%14
  200. 2000 CONNECT(530,175)-(575,175)-(575,162),%13
  201. 2010 RETURN
  202. 2020 *S_ROLL_D
  203. 2030 CONNECT(577,175)-(577,161)-(623,161),%13
  204. 2040 CONNECT(578,175)-(623,175)-(623,162),%14
  205. 2050 IF CS>=SN(CCD)-11 THEN 2130
  206. 2060 CS=CS+1
  207. 2070 GET@A(224,200)-(624,464),PT1%
  208. 2080 PUT@A(224,176)-(624,440),PT1%
  209. 2090 LINE(226,444)-(622,460),PSET,%1,BF
  210. 2100 SYMBOL(226-8,444),STR$(CS+11),1,1,%6
  211. 2110 SYMBOL(412-LEN(SNAME$(CCD,CS+11))*4,444),SNAME$(CCD,CS+11),1,1,7
  212. 2120 SYMBOL(583,444),TM$(CCD,CS+11),1,1,%7
  213. 2130 CONNECT(577,175)-(577,161)-(623,161),%14
  214. 2140 CONNECT(578,175)-(623,175)-(623,162),%13
  215. 2150 RETURN
  216. 2160 *TITLE_SELECT
  217. 2170 CONNECT(65,23)-(65,1)-(143,1),%13
  218. 2180 CONNECT(66,23)-(143,23)-(143,2),%14
  219. 2190 WHILE MOUSE(2,0):WEND
  220. 2200 CONNECT(65,23)-(65,1)-(143,1),%14
  221. 2210 CONNECT(66,23)-(143,23)-(143,2),%13
  222. 2220 GET@A(128,128)-(512,352),PT3%
  223. 2230 GOSUB *WINDOW_S
  224. 2240 SYMBOL(144,136),"タイトル選択",1,1,7,,,1
  225. 2250 FOR I=0 TO 6
  226. 2260  J=I+CLCD
  227. 2270  IF J>CDN THEN I=6:GOTO 2290
  228. 2280  SYMBOL(320-LEN(TITLE$(J))*4,172+I*24),TITLE$(J),1,1,7
  229. 2290 NEXT
  230. 2300 M=0
  231. 2310 WHILE M=0
  232. 2320  M=-MOUSE(2,0)-MOUSE(2,1)*2
  233. 2330 WEND
  234. 2340 IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:RETURN
  235. 2350 MX=MOUSE(0):MY=MOUSE(1)
  236. 2360 FOR I=0 TO 1
  237. 2370  IF MX>400+I*48 AND MX<448+I*48 AND MY>152 AND MY<168 THEN
  238. 2380   ON I+1 GOSUB *T_ROLL_U,*T_ROLL_D
  239. 2390  ENDIF
  240. 2400 NEXT
  241. 2410 FOR I=0 TO 6
  242. 2420  IF I+CLCD>CDN THEN I=6:GOTO 2290
  243. 2430  IF MX>144 AND MX<496 AND MY>168+I*24 AND MY<192+I*24 THEN
  244. 2440   K=I:I=6:NEXT:GOTO 2480
  245. 2450  ENDIF 
  246. 2460 NEXT
  247. 2470 GOTO 2300
  248. 2480 CONNECT(145,191+K*24)-(145,169+K*24)-(495,169+K*24),%13
  249. 2490 CONNECT(146,191+K*24)-(495,191+K*24)-(495,170+K*24),%14
  250. 2500 WHILE MOUSE(2,0):WEND
  251. 2510 PUT@A(128,128)-(512,352),PT3%
  252. 2520 CCD=CLCD+K:CS=1
  253. 2530 GOSUB *DISPLAY_CT:GOSUB *DISPLAY_CDDATA
  254. 2540 GOSUB *DISPLAY_SNAMES
  255. 2550 RETURN
  256. 2560 *TITLE_SORT
  257. 2570 IF CDN<1 THEN RETURN
  258. 2580 DIM BTITLE$(CDN),BART$(CDN),BLAB$(CDN),BDT$(CDN),BSN(CDN),BTIF$(CDN),BWRD$(CDN)
  259. 2590 DIM BTM$(CDN,99),BSNAME$(CDN,99),TSRT(CDN),NN(CDN)
  260. 2600 SORT=1:CLCD=1
  261. 2610 CONNECT(305,23)-(305,1)-(383,1),%13
  262. 2620 CONNECT(306,23)-(383,23)-(383,2),%14
  263. 2630 WHILE MOUSE(2,0):WEND
  264. 2640 CONNECT(305,23)-(305,1)-(383,1),%14
  265. 2650 CONNECT(306,23)-(383,23)-(383,2),%13
  266. 2660 GET@A(128,128)-(512,352),PT3%
  267. 2670 GOSUB *WINDOW_S
  268. 2680 SYMBOL(144,136),"タイトル並び換え",1,1,7,,,1
  269. 2690 FOR I=0 TO 6
  270. 2700  J=I+CLCD
  271. 2710  IF J>CDN THEN I=6:GOTO 2730
  272. 2720  SYMBOL(320-LEN(TITLE$(J))*4,172+I*24),TITLE$(J),1,1,7
  273. 2730 NEXT
  274. 2740 FOR J=1 TO CDN
  275. 2750  BTITLE$(J)=TITLE$(J):BART$(J)=ART$(J):BLAB$(J)=LAB$(J)
  276. 2760  BDT$(J)=DT$(J):BSN(J)=SN(J):BTIF$(J)=TIF$(J):BWRD$(J)=WRD$(J)
  277. 2770  FOR L=1 TO SN(J)
  278. 2780   BTM$(J,L)=TM$(J,L):BSNAME$(J,L)=SNAME$(J,L)
  279. 2790  NEXT
  280. 2800  LINE(280,136)-(500,152),PSET,%1,BF
  281. 2810  SYMBOL(280,136),AKCNV$(STR$(J))+"番目",1,1,%7
  282. 2820  M=0
  283. 2830  WHILE M=0
  284. 2840   M=-MOUSE(2,0)-MOUSE(2,1)*2
  285. 2850  WEND
  286. 2860  IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:GOTO 3300
  287. 2870  MX=MOUSE(0):MY=MOUSE(1)
  288. 2880  FOR I=0 TO 1
  289. 2890   IF MX>400+I*48 AND MX<448+I*48 AND MY>152 AND MY<168 THEN
  290. 2900    ON I+1 GOSUB *T_ROLL_U,*T_ROLL_D
  291. 2910   ENDIF
  292. 2920  NEXT
  293. 2930  FOR I=0 TO 6
  294. 2940   IF I+CLCD>CDN THEN I=6:GOTO 2990
  295. 2950   IF TSRT(I+CLCD)=1 THEN 2990
  296. 2960   IF MX>144 AND MX<496 AND MY>168+I*24 AND MY<192+I*24 THEN
  297. 2970    K=I:I=6:NEXT:GOTO 3010
  298. 2980   ENDIF 
  299. 2990  NEXT
  300. 3000  GOTO 2820
  301. 3010  CONNECT(145,191+K*24)-(145,169+K*24)-(495,169+K*24),%13
  302. 3020  CONNECT(146,191+K*24)-(495,191+K*24)-(495,170+K*24),%14
  303. 3030  WHILE MOUSE(2,0):WEND
  304. 3040  TSRT(K+CLCD)=1:NN(J)=K+CLCD
  305. 3050  CONNECT(145,191+K*24)-(145,169+K*24)-(495,169+K*24),%14
  306. 3060  CONNECT(146,191+K*24)-(495,191+K*24)-(495,170+K*24),%13
  307. 3070  SYMBOL(320-LEN(TITLE$(K+CLCD))*4,172+K*24),TITLE$(K+CLCD),1,1,2
  308. 3080 NEXT
  309. 3090 PUT@A(128,128)-(512,352),PT3%
  310. 3100 GOSUB *WINDOW
  311. 3110 SYMBOL(235,232),"これでいいですか?",1,1,7
  312. 3120 M=0
  313. 3130 WHILE M=0
  314. 3140  M=-MOUSE(2,0)-MOUSE(2,1)*2
  315. 3150 WEND
  316. 3160 IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:GOTO 3300
  317. 3170 GOSUB *W_CHECK_YN
  318. 3180 IF YN=1 THEN 3200
  319. 3190 IF YN=2 THEN PUT@A(128,128)-(512,352),PT3%:GOTO 3300 ELSE 3120
  320. 3200 PUT@A(128,128)-(512,352),PT3%
  321. 3210 FOR I=1 TO CDN:J=NN(I)
  322. 3220  TITLE$(I)=BTITLE$(J):ART$(I)=BART$(J):LAB$(I)=BLAB$(J)
  323. 3230  DT$(I)=BDT$(J):SN(I)=BSN(J):TIF$(I)=BTIF$(J):WRD$(I)=BWRD$(J)
  324. 3240  FOR L=1 TO SN(I)
  325. 3250   TM$(I,L)=BTM$(J,L):SNAME$(I,L)=BSNAME$(J,L)
  326. 3260 NEXT L,I
  327. 3270 CCD=1:CLCD=CCD:CS=1
  328. 3280 GOSUB *DISPLAY_CT:GOSUB *DISPLAY_CDDATA
  329. 3290 GOSUB *DISPLAY_SNAMES
  330. 3300 ERASE TSRT,NN
  331. 3310 ERASE BTITLE$,BART$,BLAB$,BDT$,BSN,BTIF$,BWRD$,BTM$,BSNAME$
  332. 3320 SORT=0
  333. 3330 RETURN
  334. 3340 *T_ROLL_U
  335. 3350 CONNECT(401,167)-(401,153)-(447,153),%13
  336. 3360 CONNECT(402,167)-(447,167)-(447,154),%14
  337. 3370 IF CLCD=<1 THEN 3460
  338. 3380 CLCD=CLCD-1
  339. 3390 GET@A(144,168)-(496,312),PT1%
  340. 3400 PUT@A(144,192)-(496,336),PT1%
  341. 3410 LINE(146,172)-(494,188),PSET,%1,BF
  342. 3420 IF SORT=0 THEN 3450
  343. 3430 IF TSRT(CLCD)=0 THEN 3450
  344. 3440 SYMBOL(320-LEN(TITLE$(CLCD))*4,172),TITLE$(CLCD),1,1,2:GOTO 3460
  345. 3450 SYMBOL(320-LEN(TITLE$(CLCD))*4,172),TITLE$(CLCD),1,1,7
  346. 3460 CONNECT(401,167)-(401,153)-(447,153),%14
  347. 3470 CONNECT(402,167)-(447,167)-(447,154),%13
  348. 3480 RETURN
  349. 3490 *T_ROLL_D
  350. 3500 CONNECT(449,167)-(449,153)-(495,153),%13
  351. 3510 CONNECT(450,167)-(495,167)-(495,154),%14
  352. 3520 IF CLCD>=CDN-6 THEN 3610
  353. 3530 CLCD=CLCD+1
  354. 3540 GET@A(144,192)-(496,336),PT1%
  355. 3550 PUT@A(144,168)-(496,312),PT1%
  356. 3560 LINE(146,316)-(494,332),PSET,%1,BF
  357. 3570 IF SORT=0 THEN 3600
  358. 3580 IF TSRT(CLCD+6)=0 THEN 3600
  359. 3590 SYMBOL(320-LEN(TITLE$(CLCD+6))*4,316),TITLE$(CLCD+6),1,1,2:GOTO 3610
  360. 3600 SYMBOL(320-LEN(TITLE$(CLCD+6))*4,316),TITLE$(CLCD+6),1,1,7
  361. 3610 CONNECT(449,167)-(449,153)-(495,153),%14
  362. 3620 CONNECT(450,167)-(495,167)-(495,154),%13
  363. 3630 RETURN
  364. 3640 *TITLE_ADD
  365. 3650 IF CDN<1 THEN RETURN
  366. 3660 DIM BTITLE$(CDN),BART$(CDN),BLAB$(CDN),BDT$(CDN),BSN(CDN),BTIF$(CDN),BWRD$(CDN)
  367. 3670 DIM BTM$(CDN,99),BSNAME$(CDN,99)
  368. 3680 CONNECT(385,23)-(385,1)-(463,1),%13
  369. 3690 CONNECT(386,23)-(463,23)-(463,2),%14
  370. 3700 WHILE MOUSE(2,0):WEND
  371. 3710 CONNECT(385,23)-(385,1)-(463,1),%14
  372. 3720 CONNECT(386,23)-(463,23)-(463,2),%13
  373. 3730 GET@A(128,128)-(512,352),PT3%
  374. 3740 GOSUB *WINDOW
  375. 3750 SYMBOL(144,200),"タイトル新規追加",1,1,7,,,1
  376. 3760 SYMBOL(185,232),"登録したいCDをドライブに入れて!",1,1,7
  377. 3770 IF PLAYCD=1 OR PLAYCD=2 THEN CD STOP
  378. 3780 M=0
  379. 3790 WHILE M=0
  380. 3800  M=-MOUSE(2,0)-MOUSE(2,1)*2
  381. 3810 WEND
  382. 3820 IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:GOTO 4210
  383. 3830 GOSUB *W_CHECK_YN
  384. 3840 IF YN=1 THEN 3860
  385. 3850 IF YN=2 THEN PUT@A(128,128)-(512,352),PT3%:GOTO 4210 ELSE 3780
  386. 3860 PUT@A(128,128)-(512,352),PT3%
  387. 3870 CDINF CDF%
  388. 3880 FOR I=1 TO CDN
  389. 3890  BTITLE$(I)=TITLE$(I):BART$(I)=ART$(I):BLAB$(I)=LAB$(I)
  390. 3900  BDT$(I)=DT$(I):BSN(I)=SN(I):BTIF$(I)=TIF$(I):BWRD$(I)=WRD$(I)
  391. 3910  FOR L=1 TO SN(I)
  392. 3920   BTM$(I,L)=TM$(I,L):BSNAME$(I,L)=SNAME$(I,L)
  393. 3930 NEXT L,I
  394. 3940 CDN=CDN+1
  395. 3950 ERASE TITLE$,ART$,LAB$,DT$,SN,TIF$,WRD$,TM$,SNAME$
  396. 3960 DIM TITLE$(CDN),ART$(CDN),LAB$(CDN),DT$(CDN),SN(CDN),TIF$(CDN),WRD$(CDN)
  397. 3970 DIM TM$(CDN,99),SNAME$(CDN,99)
  398. 3980 FOR I=1 TO CDN-1
  399. 3990  TITLE$(I)=BTITLE$(I):ART$(I)=BART$(I):LAB$(I)=BLAB$(I)
  400. 4000  DT$(I)=BDT$(I):SN(I)=BSN(I):TIF$(I)=BTIF$(I):WRD$(I)=BWRD$(I)
  401. 4010  FOR L=1 TO SN(I)
  402. 4020   TM$(I,L)=BTM$(I,L):SNAME$(I,L)=BSNAME$(I,L)
  403. 4030 NEXT L,I
  404. 4040 SN(CDN)=CDF%(5)
  405. 4050 FOR I=1 TO SN(CDN)
  406. 4060  IF I=SN(CDN) THEN
  407. 4070   A1=CDF%(2)-VAL(LEFT$(CDSTIME$(I),2))
  408. 4080   A2=CDF%(3)-VAL(MID$(CDSTIME$(I),4,2))
  409. 4090   A21=CDF%(4)-VAL(RIGHT$(CDSTIME$(I),2)):GOTO 4140
  410. 4100  ENDIF
  411. 4110  A1=VAL(LEFT$(CDSTIME$(I+1),2))-VAL(LEFT$(CDSTIME$(I),2))
  412. 4120  A2=VAL(MID$(CDSTIME$(I+1),4,2))-VAL(MID$(CDSTIME$(I),4,2))
  413. 4130  A21=VAL(RIGHT$(CDSTIME$(I+1),2))-VAL(RIGHT$(CDSTIME$(I),2))
  414. 4140  A3=INT(A1*60+A2+A21/75)
  415. 4150  TM1$=STR$(INT(A3/60)):TM2$=STR$(A3 MOD 60)
  416. 4160  TM$(CDN,I)=RIGHT$("00"+RIGHT$(TM1$,LEN(TM1$)-1),2)+"'"+RIGHT$("00"+RIGHT$(TM2$,LEN(TM2$)-1),2)
  417. 4170 NEXT
  418. 4180 CCD=CDN:CLCD=1:CS=1
  419. 4190 GOSUB *DISPLAY_CT:GOSUB *DISPLAY_CDDATA
  420. 4200 GOSUB *DISPLAY_SNAMES
  421. 4210 ERASE BTITLE$,BART$,BLAB$,BDT$,BSN,BTIF$,BWRD$,BTM$,BSNAME$
  422. 4220 RETURN
  423. 4230 *EDIT_TITLE
  424. 4240 CONNECT(273,63)-(273,41)-(623,41),%13
  425. 4250 CONNECT(274,63)-(623,63)-(623,42),%14
  426. 4260 IP_WX=280:IP_WY=44:IP_MAX=42:IP_CL=1:IP_NAME$=TITLE$(CCD):A$=TITLE$(CCD)
  427. 4270 GOSUB *IP_SET
  428. 4280 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F) AND IP_CK$<>CHR$(24) AND IP_CK$<>CHR$(27)
  429. 4290 GOSUB *IP_MAIN:WEND
  430. 4300 GOSUB *IP_END
  431. 4310 TITLE$(CCD)=IP_NAME$
  432. 4320 IF IP_CK$=CHR$(24) OR IP_CK$=CHR$(27) THEN TITLE$(CCD)=A$
  433. 4330 CONNECT(273,63)-(273,41)-(623,41),%14
  434. 4340 CONNECT(274,63)-(623,63)-(623,42),%13
  435. 4350 LINE(274,42)-(622,62),PSET,%1,BF
  436. 4360 SYMBOL(448-LEN(TITLE$(CCD))*4,44),TITLE$(CCD),1,1,7
  437. 4370 IF IP_CK$=CHR$(&H1F) THEN GOTO *EDIT_ART
  438. 4380 RETURN
  439. 4390 *EDIT_ART
  440. 4400 CONNECT(273,87)-(273,65)-(623,65),%13
  441. 4410 CONNECT(274,87)-(623,87)-(623,66),%14
  442. 4420 IP_WX=280:IP_WY=68:IP_MAX=42:IP_CL=1:IP_NAME$=ART$(CCD):A$=ART$(CCD)
  443. 4430 GOSUB *IP_SET
  444. 4440 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F) AND IP_CK$<>CHR$(24) AND IP_CK$<>CHR$(27)
  445. 4450 GOSUB *IP_MAIN:WEND
  446. 4460 GOSUB *IP_END
  447. 4470 ART$(CCD)=IP_NAME$
  448. 4480 IF IP_CK$=CHR$(24) OR IP_CK$=CHR$(27) THEN ART$(CCD)=A$
  449. 4490 CONNECT(273,87)-(273,65)-(623,65),%14
  450. 4500 CONNECT(274,87)-(623,87)-(623,66),%13
  451. 4510 LINE(274,66)-(622,86),PSET,%1,BF
  452. 4520 SYMBOL(448-LEN(ART$(CCD))*4,68),ART$(CCD),1,1,7
  453. 4530 IF IP_CK$=CHR$(&H1E) THEN GOTO *EDIT_TITLE
  454. 4540 IF IP_CK$=CHR$(&H1F) THEN GOTO *EDIT_DT
  455. 4550 RETURN
  456. 4560 *EDIT_DT
  457. 4570 CONNECT(273,111)-(273,89)-(399,89),%13
  458. 4580 CONNECT(274,111)-(399,111)-(399,90),%14
  459. 4590 IP_WX=280:IP_WY=92:IP_MAX=10:IP_CL=1:IP_NAME$=DT$(CCD):A$=DT$(CCD)
  460. 4600 LINE(274,90)-(398,110),PSET,%1,BF
  461. 4610 GOSUB *IP_SET
  462. 4620 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F) AND IP_CK$<>CHR$(24) AND IP_CK$<>CHR$(27)
  463. 4630 GOSUB *IP_MAIN:WEND
  464. 4640 GOSUB *IP_END
  465. 4650 DT$(CCD)=IP_NAME$
  466. 4660 IF IP_CK$=CHR$(24) OR IP_CK$=CHR$(27) THEN DT$(CCD)=A$
  467. 4670 CONNECT(273,111)-(273,89)-(399,89),%14
  468. 4680 CONNECT(274,111)-(399,111)-(399,90),%13
  469. 4690 LINE(274,90)-(398,110),PSET,%1,BF
  470. 4700 SYMBOL(336-LEN(DT$(CCD))*4,92),DT$(CCD),1,1,7
  471. 4710 IF IP_CK$=CHR$(&H1E) THEN GOTO *EDIT_ART
  472. 4720 IF IP_CK$=CHR$(&H1F) THEN GOTO *EDIT_LAB
  473. 4730 RETURN
  474. 4740 *EDIT_TIF
  475. 4750 CONNECT(273,135)-(273,113)-(399,113),%13
  476. 4760 CONNECT(274,135)-(399,135)-(399,114),%14
  477. 4770 IP_WX=280:IP_WY=116:IP_MAX=8:IP_CL=1:IP_NAME$=TIF$(CCD):A$=TIF$(CCD)
  478. 4780 LINE(274,114)-(398,134),PSET,%1,BF
  479. 4790 GOSUB *IP_SET
  480. 4800 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F) AND IP_CK$<>CHR$(24) AND IP_CK$<>CHR$(27)
  481. 4810 GOSUB *IP_MAIN:WEND
  482. 4820 GOSUB *IP_END
  483. 4830 TIF$(CCD)=IP_NAME$
  484. 4840 IF IP_CK$=CHR$(24) OR IP_CK$=CHR$(27) THEN TIF$(CCD)=A$
  485. 4850 CONNECT(273,135)-(273,113)-(399,113),%14
  486. 4860 CONNECT(274,135)-(399,135)-(399,114),%13
  487. 4870 LINE(274,114)-(398,134),PSET,%1,BF
  488. 4880 SYMBOL(336-LEN(TIF$(CCD))*4,116),TIF$(CCD),1,1,7
  489. 4890 IF IP_CK$=CHR$(&H1E) THEN GOTO *EDIT_LAB
  490. 4900 IF IP_CK$=CHR$(&H1F) THEN GOTO *EDIT_WRD
  491. 4910 RETURN
  492. 4920 *EDIT_LAB
  493. 4930 GET@A(274,89)-(623,111),PT3%
  494. 4940 LINE(274,89)-(623,111),PSET,7,BF,%1
  495. 4950 IP_WX=280:IP_WY=92:IP_MAX=42:IP_CL=1:IP_NAME$=LAB$(CCD):A$=LAB$(CCD)
  496. 4960 GOSUB *IP_SET
  497. 4970 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F) AND IP_CK$<>CHR$(24) AND IP_CK$<>CHR$(27)
  498. 4980 GOSUB *IP_MAIN:WEND
  499. 4990 GOSUB *IP_END
  500. 5000 LAB$(CCD)=IP_NAME$
  501. 5010 IF IP_CK$=CHR$(24) OR IP_CK$=CHR$(27) THEN LAB$(CCD)=A$
  502. 5020 PUT@A(274,89)-(623,111),PT3%
  503. 5030 LINE(466,90)-(622,110),PSET,%1,BF
  504. 5040 IF LEN(LAB$(CCD))>18 THEN A$=LEFT$(LAB$(CCD),18) ELSE A$=LAB$(CCD)
  505. 5050 SYMBOL(544-LEN(A$)*4,92),A$,1,1,7
  506. 5060 IF IP_CK$=CHR$(&H1E) THEN GOTO *EDIT_DT
  507. 5070 IF IP_CK$=CHR$(&H1F) THEN GOTO *EDIT_TIF
  508. 5080 RETURN
  509. 5090 *EDIT_WRD
  510. 5100 CONNECT(465,135)-(465,113)-(623,113),%13
  511. 5110 CONNECT(466,135)-(623,135)-(623,114),%14
  512. 5120 IP_WX=472:IP_WY=116:IP_MAX=6:IP_CL=1:IP_NAME$=WRD$(CCD):A$=WRD$(CCD)
  513. 5130 LINE(466,114)-(622,134),PSET,%1,BF
  514. 5140 GOSUB *IP_SET
  515. 5150 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F) AND IP_CK$<>CHR$(24) AND IP_CK$<>CHR$(27)
  516. 5160 GOSUB *IP_MAIN:WEND
  517. 5170 GOSUB *IP_END
  518. 5180 WRD$(CCD)=IP_NAME$
  519. 5190 IF IP_CK$=CHR$(24) OR IP_CK$=CHR$(27) THEN WRD$(CCD)=A$
  520. 5200 CONNECT(465,135)-(465,113)-(623,113),%14
  521. 5210 CONNECT(466,135)-(623,135)-(623,114),%13
  522. 5220 LINE(466,114)-(622,134),PSET,%1,BF
  523. 5230 SYMBOL(544-LEN(WRD$(CCD))*4,116),WRD$(CCD),1,1,7
  524. 5240 IF IP_CK$=CHR$(&H1E) THEN GOTO *EDIT_TIF
  525. 5250 IF IP_CK$=CHR$(&H1F) THEN CES=0:GOTO *EDIT_SNAME
  526. 5260 RETURN
  527. 5270 *EDIT_SNAME
  528. 5280 CONNECT(225,199+CES*24)-(225,177+CES*24)-(623,177+CES*24),%13
  529. 5290 CONNECT(226,199+CES*24)-(623,199+CES*24)-(623,178+CES*24),%14
  530. 5300 IP_WX=244:IP_WY=180+CES*24:IP_MAX=42:IP_CL=1
  531. 5310 IP_NAME$=SNAME$(CCD,CS+CES):A$=SNAME$(CCD,CS+CES)
  532. 5320 GOSUB *IP_SET
  533. 5330 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F) AND IP_CK$<>CHR$(24) AND IP_CK$<>CHR$(27)
  534. 5340 GOSUB *IP_MAIN:WEND
  535. 5350 GOSUB *IP_END
  536. 5360 SNAME$(CCD,CS+CES)=IP_NAME$
  537. 5370 IF IP_CK$=CHR$(24) OR IP_CK$=CHR$(27) THEN SNAME$(CCD,CS+CES)=A$
  538. 5380 CONNECT(225,199+CES*24)-(225,177+CES*24)-(623,177+CES*24),%14
  539. 5390 CONNECT(226,199+CES*24)-(623,199+CES*24)-(623,178+CES*24),%13
  540. 5400 LINE(244,178+CES*24)-(580,198+CES*24),PSET,%1,BF
  541. 5410 SYMBOL(412-LEN(SNAME$(CCD,CS+CES))*4,180+CES*24),SNAME$(CCD,CS+CES),1,1,7
  542. 5420 IF IP_CK$=CHR$(&H1E) THEN
  543. 5430  IF CES>0 THEN CES=CES-1:GOTO *EDIT_SNAME
  544. 5440  IF CS+CES>1 THEN GOSUB *S_ROLL_U:GOTO *EDIT_SNAME
  545. 5450  GOTO *EDIT_WRD
  546. 5460 ENDIF
  547. 5470 IF IP_CK$=CHR$(&H1F) THEN
  548. 5480  IF CES<11 AND CES<SN(CCD)-1 THEN CES=CES+1:GOTO *EDIT_SNAME
  549. 5490  IF CS+CES<SN(CCD) THEN GOSUB *S_ROLL_D:GOTO *EDIT_SNAME
  550. 5500 ENDIF
  551. 5510 RETURN
  552. 5520 *SAVE
  553. 5530 CONNECT(225,23)-(225,1)-(303,1),%13
  554. 5540 CONNECT(226,23)-(303,23)-(303,2),%14
  555. 5550 IF CDN=0 THEN RETURN
  556. 5560 WHILE MOUSE(2,0):WEND
  557. 5570 KILF=0
  558. 5580 CONNECT(225,23)-(225,1)-(303,1),%14
  559. 5590 CONNECT(226,23)-(303,23)-(303,2),%13
  560. 5600 GOSUB *FILE_IP_P
  561. 5610 SYMBOL(144,200),".CDLファイル保存",1,1,7
  562. 5620 GOSUB *FILE_IP_L
  563. 5630 IF KILF=1 THEN KILL FILE$
  564. 5640 OPEN "O",#1,FILE$
  565. 5650 MOUSE 1,,,0
  566. 5660 A$=STR$(CDN):A$=RIGHT$("00000"+RIGHT$(A$,LEN(A$)-1),5)
  567. 5670 PRINT#1,A$
  568. 5680 GET@A(280,220)-(360,260),PT3%
  569. 5690 LINE(280,220)-(360,260),PSET,7,BF,%1
  570. 5700 SYMBOL(320,232),"0%",1,1,7
  571. 5710 FOR I=1 TO CDN
  572. 5720  PRINT#1,"##"
  573. 5730  PRINT#1,LEFT$(TITLE$(I)+SPACE$(42),42)
  574. 5740  PRINT#1,LEFT$(ART$(I)+SPACE$(42),42)
  575. 5750  PRINT#1,LEFT$(LAB$(I)+SPACE$(42),42)
  576. 5760  PRINT#1,LEFT$(DT$(I)+SPACE$(10),10)
  577. 5770  PRINT#1,RIGHT$(STR$(SN(I)),2)
  578. 5780  PRINT#1,LEFT$(TIF$(I)+SPACE$(8),8)
  579. 5790  PRINT#1,LEFT$(WRD$(I)+SPACE$(6),6)
  580. 5800  FOR J=1 TO SN(I)
  581. 5810   PRINT#1,TM$(I,J)
  582. 5820   PRINT#1,LEFT$(SNAME$(I,J)+SPACE$(42),42)
  583. 5830  NEXT J
  584. 5840  LINE(304,232)-(336,248),PSET,%1,BF
  585. 5850  SYMBOL(304,232),RIGHT$(" "+STR$(INT(I/CDN*100)),3)+"%",1,1,7
  586. 5860 NEXT I
  587. 5870 PUT@A(280,220)-(360,260),PT3%
  588. 5880 CLOSE:MOUSE 1,,,1
  589. 5890 RETURN
  590. 5900 *COPYRIGHT
  591. 5910 WHILE MOUSE(2,0):WEND
  592. 5920 GET@A(128,128)-(512,352),PT3%
  593. 5930 LINE(128,176)-(512,305),PSET,7,BF,%1
  594. 5940 MOUSE 1,,,0
  595. 5950 SYMBOL(192,200),".CDLファイルエディタ",1,1,7
  596. 5960 SYMBOL(220,225),"CDLister Ver."+VER$,1,1,%6
  597. 5970 SYMBOL(240,260),"Copyright (c) KIM 1994.",1,1,7
  598. 5980 WHILE MOUSE(2,0)=0 AND MOUSE(2,1)=0:WEND
  599. 5990 PUT@A(128,128)-(512,352),PT3%
  600. 6000 MOUSE 1,,,1
  601. 6010 RETURN
  602. 6020 *EXIT
  603. 6030 CONNECT(617,23)-(617,1)-(639,1),%13
  604. 6040 CONNECT(618,23)-(639,23)-(639,2),%14
  605. 6050 WHILE MOUSE(2,0):WEND
  606. 6060 CONNECT(617,23)-(617,1)-(639,1),%14
  607. 6070 CONNECT(618,23)-(639,23)-(639,2),%13
  608. 6080 GOSUB *WINDOW
  609. 6090 SYMBOL(272,232),"終了します",1,1,7
  610. 6100 M=0
  611. 6110 WHILE M=0
  612. 6120  M=-MOUSE(2,0)-MOUSE(2,1)*2
  613. 6130 WEND
  614. 6140 IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:RETURN *MAIN
  615. 6150 GOSUB *W_CHECK_YN
  616. 6160 IF YN=1 THEN
  617. 6170  MOUSE 5
  618. 6180  PUT@A(128,128)-(512,352),PT3%
  619. 6190  IF PLAYCD=1 OR PLAYCD=2 THEN CD STOP
  620. 6200  KILL"CDLVHIS.DAT"
  621. 6210  OPEN "O",#1,"CDLVHIS.DAT"
  622. 6220  PRINT#1,FILE$
  623. 6230  CLOSE
  624. 6240  END
  625. 6250 ENDIF
  626. 6260 IF YN=2 THEN PUT@A(128,128)-(512,352),PT3%:RETURN *MAIN
  627. 6270 GOTO 6100
  628. 6280 *WINDOW_S
  629. 6290 WINDOW(0,0)-(639-128,479-128):VIEW(128,128)-(639,479)
  630. 6300 LINE(0,0)-(384,224),PSET,7,BF,%1
  631. 6310 FOR I=0 TO 6
  632. 6320  LINE(16,40+I*24)-(368,64+I*24),PSET,%13,B
  633. 6330  CONNECT(17,63+I*24)-(17,41+I*24)-(367,41+I*24),%14
  634. 6340  CONNECT(18,63+I*24)-(367,63+I*24)-(367,42+I*24),%13
  635. 6350 NEXT
  636. 6360 FOR I=0 TO 1
  637. 6370  LINE(272+I*48,24)-(320+I*48,40),PSET,%13,B
  638. 6380  CONNECT(273+I*48,39)-(273+I*48,25)-(319+I*48,25),%14
  639. 6390  CONNECT(274+I*48,39)-(319+I*48,39)-(319+I*48,26),%13
  640. 6400 NEXT
  641. 6410 SYMBOL(294,29),"▲",.5!,.5!,%11
  642. 6420 SYMBOL(294+48,29),"▼",.5!,.5!,%11
  643. 6430 WINDOW:VIEW
  644. 6440 RETURN
  645. 6450 *WINDOW
  646. 6460 GET@A(128,128)-(512,352),PT3%
  647. 6470 LINE(128,192)-(512,289),PSET,7,BF,%1
  648. 6480 FOR I=0 TO 1
  649. 6490  LINE(408+I*48,256)-(456+I*48,280),PSET,%13,B
  650. 6500  CONNECT(409+I*48,279)-(409+I*48,257)-(455+I*48,257),%14
  651. 6510  CONNECT(410+I*48,279)-(455+I*48,279)-(455+I*48,258),%13
  652. 6520 NEXT
  653. 6530 SYMBOL(416,260),"実行",1,1,7
  654. 6540 SYMBOL(464,260),"取消",1,1,7
  655. 6550 RETURN
  656. 6560 *W_CHECK_YN
  657. 6570 MX=MOUSE(0):MY=MOUSE(1)
  658. 6580 YN=0
  659. 6590 FOR I=0 TO 1
  660. 6600  IF MX>408+I*48 AND MX<456+I*48 AND MY>256 AND MY<280 THEN
  661. 6610   CONNECT(409+I*48,279)-(409+I*48,257)-(455+I*48,257),%13
  662. 6620   CONNECT(410+I*48,279)-(455+I*48,279)-(455+I*48,258),%14
  663. 6630   YN=I+1
  664. 6640  ENDIF
  665. 6650 NEXT
  666. 6660 WHILE MOUSE(2,0):WEND
  667. 6670 RETURN
  668. 6680 *CDPLAY
  669. 6690 CONNECT(113,247)-(113,225)-(159,225),%13
  670. 6700 CONNECT(114,247)-(159,247)-(159,226),%14
  671. 6710 IF PLAYCD=1 THEN PLAYCD=2:CD PAUSE:GOTO 6790
  672. 6720 IF PLAYCD=2 THEN PLAYCD=1:CD CONT:GOTO 6790
  673. 6730 CDINF CDF%
  674. 6740 IF CDF%(1)=2 THEN GOTO 6790 ELSE IF CDF%(1)=3 THEN PLAYCDF=2 ELSE PLAYCDF=1
  675. 6750 PLAYCD=1
  676. 6760 PLAYCDN=PLAYCDF
  677. 6770 CD PLAY PLAYCDN,CDF%(5)
  678. 6780 GOSUB *SYMBOL_PLAYCD
  679. 6790 WHILE MOUSE(2,0):WEND
  680. 6800 CONNECT(113,247)-(113,225)-(159,225),%14
  681. 6810 CONNECT(114,247)-(159,247)-(159,226),%13
  682. 6820 RETURN
  683. 6830 *SYMBOL_PLAYCD
  684. 6840 LINE(120,252)-(136,268),PSET,0,BF
  685. 6850 SYMBOL(112,252),STR$(PLAYCDN),1,1,%12
  686. 6860 RETURN
  687. 6870 *SYMBOL_STIME
  688. 6880 LINE(144,252)-(184,268),PSET,0,BF
  689. 6890 TM1$=STR$(STIMEM):TM2$=STR$(STIMES)
  690. 6900 SYMBOL(144,252),RIGHT$("00"+RIGHT$(TM1$,LEN(TM1$)-1),2)+"'"+RIGHT$("00"+RIGHT$(TM2$,LEN(TM2$)-1),2),1,1,%12
  691. 6910 RETURN
  692. 6920 *CDSTOP
  693. 6930 CONNECT(161,247)-(161,225)-(199,225),%13
  694. 6940 CONNECT(162,247)-(199,247)-(199,226),%14
  695. 6950 IF PLAYCD=0 THEN 6990
  696. 6960 CD STOP
  697. 6970 PLAYCD=0
  698. 6980 LINE(120,252)-(184,268),PSET,0,BF
  699. 6990 WHILE MOUSE(2,0):WEND
  700. 7000 CONNECT(161,247)-(161,225)-(199,225),%14
  701. 7010 CONNECT(162,247)-(199,247)-(199,226),%13
  702. 7020 RETURN
  703. 7030 *CDBACK
  704. 7040 CONNECT(17,239)-(17,225)-(63,225),%13
  705. 7050 CONNECT(18,239)-(63,239)-(63,226),%14
  706. 7060 IF PLAYCD=0 THEN 7130
  707. 7070 PLAYCD=1:A=0
  708. 7080 IF (CDS%(7)<2 OR A>0) AND PLAYCDN>PLAYCDF THEN PLAYCDN=PLAYCDN-1
  709. 7090 GOSUB *SYMBOL_PLAYCD:A=A+1
  710. 7100 WAIT 20
  711. 7110 IF MOUSE(2,0) THEN 7080
  712. 7120 CD PLAY PLAYCDN,CDF%(5)
  713. 7130 CONNECT(17,239)-(17,225)-(63,225),%14
  714. 7140 CONNECT(18,239)-(63,239)-(63,226),%13
  715. 7150 RETURN
  716. 7160 *CDNEXT
  717. 7170 CONNECT(65,239)-(65,225)-(111,225),%13
  718. 7180 CONNECT(66,239)-(111,239)-(111,226),%14
  719. 7190 IF PLAYCD=0 OR PLAYCDN>=CDF%(5) THEN 7260
  720. 7200 PLAYCD=1
  721. 7210 PLAYCDN=PLAYCDN+1
  722. 7220 GOSUB *SYMBOL_PLAYCD
  723. 7230 WAIT 20
  724. 7240 IF MOUSE(2,0) THEN 7210
  725. 7250 CD PLAY PLAYCDN,CDF%(5)
  726. 7260 CONNECT(65,239)-(65,225)-(111,225),%14
  727. 7270 CONNECT(66,239)-(111,239)-(111,226),%13
  728. 7280 RETURN
  729. 7290 *CDREW
  730. 7300 CONNECT(17,255)-(17,241)-(63,241),%13
  731. 7310 CONNECT(18,255)-(63,255)-(63,242),%14
  732. 7320 IF PLAYCD=0 THEN 7630
  733. 7330 PLAYCD=1
  734. 7340 CDTIMEM=CDS%(2):CDTIMES=CDS%(3)
  735. 7350 A1=VAL(LEFT$(CDSTIME$(PLAYCDF),2))
  736. 7360 A2=VAL(MID$(CDSTIME$(PLAYCDF),4,2))
  737. 7370 IF NOT(CDTIMEM=A1 AND CDTIMES=A2) THEN
  738. 7380  IF CDTIMES=0 THEN
  739. 7390   CDTIMEM=CDTIMEM-1:CDTIMES=59
  740. 7400  ELSE
  741. 7410   CDTIMES=CDTIMES-1
  742. 7420  ENDIF
  743. 7430  A3=VAL(LEFT$(CDSTIME$(PLAYCDN),2))
  744. 7440  A4=VAL(MID$(CDSTIME$(PLAYCDN),4,2))
  745. 7450  IF NOT(CDTIMEM*60+CDTIMES<A3*60+A4) THEN
  746. 7460   IF STIMES=0 THEN
  747. 7470    STIMEM=STIMEM-1:STIMES=59
  748. 7480   ELSE
  749. 7490    STIMES=STIMES-1
  750. 7500   ENDIF
  751. 7510  ELSE
  752. 7520   A5=VAL(LEFT$(CDSTIME$(PLAYCDN-1),2))
  753. 7530   A6=VAL(MID$(CDSTIME$(PLAYCDN-1),4,2))
  754. 7540   A7=(A3-A5)*60+(A4-A6)-1
  755. 7550   STIMEM=INT(A7/60):STIMES=(A7 MOD 60)
  756. 7560   PLAYCDN=PLAYCDN-1:CDS%(5)=PLAYCDN:GOSUB *SYMBOL_PLAYCD
  757. 7570  ENDIF
  758. 7580 ENDIF
  759. 7590 GOSUB *SYMBOL_STIME
  760. 7600 WAIT 2
  761. 7610 IF MOUSE(2,0) THEN 7370
  762. 7620 CD PLAY(CDTIMEM,CDTIMES,0)
  763. 7630 CONNECT(17,255)-(17,241)-(63,241),%14
  764. 7640 CONNECT(18,255)-(63,255)-(63,242),%13
  765. 7650 RETURN
  766. 7660 *CDFF
  767. 7670 CONNECT(65,255)-(65,241)-(111,241),%13
  768. 7680 CONNECT(66,255)-(111,255)-(111,242),%14
  769. 7690 IF PLAYCD=0 THEN 7970
  770. 7700 PLAYCD=1
  771. 7710 CDTIMEM=CDS%(2):CDTIMES=CDS%(3)
  772. 7720 IF NOT(CDTIMEM=CDF%(2) AND CDTIMES=CDF%(3)) THEN
  773. 7730  IF CDTIMES=59 THEN
  774. 7740   CDTIMEM=CDTIMEM+1:CDTIMES=0
  775. 7750  ELSE
  776. 7760   CDTIMES=CDTIMES+1
  777. 7770  ENDIF
  778. 7780  IF PLAYCDN>=CDF%(5) THEN 7810
  779. 7790  A1=VAL(LEFT$(CDSTIME$(PLAYCDN+1),2))
  780. 7800  A2=VAL(MID$(CDSTIME$(PLAYCDN+1),4,2))
  781. 7810  IF NOT(CDTIMEM=A1 AND CDTIMES=A2) OR PLAYCD=CDF%(5) THEN
  782. 7820   IF STIMES=59 THEN
  783. 7830    STIMEM=STIMEM+1:STIMES=0
  784. 7840   ELSE
  785. 7850    STIMES=STIMES+1
  786. 7860   ENDIF
  787. 7870  ELSE
  788. 7880   PLAYCDN=PLAYCDN+1:CDS%(5)=PLAYCDN
  789. 7890   STIMEM=0:STIMES=0
  790. 7900   GOSUB *SYMBOL_PLAYCD
  791. 7910  ENDIF
  792. 7920 ENDIF
  793. 7930 GOSUB *SYMBOL_STIME
  794. 7940 WAIT 2
  795. 7950 IF MOUSE(2,0) THEN 7720
  796. 7960 CD PLAY(CDTIMEM,CDTIMES,0)
  797. 7970 CONNECT(65,255)-(65,241)-(111,241),%14
  798. 7980 CONNECT(66,255)-(111,255)-(111,242),%13
  799. 7990 RETURN
  800. 8000 *IP_SET
  801. 8010 '設定項目 IP_WX,IP_WY,IP_MAX,IP_CL,IP_NAME$
  802. 8020 WHILE INKEY$<>"":WEND
  803. 8030 LINE(IP_WX,IP_WY)-(IP_WX+IP_MAX*8,IP_WY+15),PSET,%IP_CL,BF
  804. 8040 SYMBOL(IP_WX,IP_WY),IP_NAME$,1,1,7
  805. 8050 IP_X=0:IP_J=0:IP_L=LEN(IP_NAME$):IP_CK$=""
  806. 8060 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,2
  807. 8070 RETURN
  808. 8080 *IP_MAIN
  809. 8090 IP_BNAME$=IP_NAME$
  810. 8100 IP_A$=""
  811. 8110 IP_B$=INKEY$:IF IP_B$<>"" THEN IP_A$=IP_A$+IP_B$:GOTO 8110
  812. 8120 IF IP_A$="" THEN RETURN
  813. 8130 FOR IP_I=1 TO KLEN(IP_A$)
  814. 8140  IP_CK$=KMID$(IP_A$,IP_I,1)
  815. 8150  IP_ACK=ASC(IP_CK$)
  816. 8160  IF IP_ACK<&H20 OR IP_ACK=&H7F THEN 8230
  817. 8170  IF LEN(IP_NAME$+IP_CK$)>IP_MAX THEN 8230
  818. 8180  IP_BX=IP_X
  819. 8190  IP_NAME$=LEFT$(IP_NAME$,IP_X)+IP_CK$+RIGHT$(IP_NAME$,IP_L-IP_X)
  820. 8200  IP_X=IP_X+LEN(IP_CK$):IP_L=LEN(IP_NAME$):IP_J=IP_J+1
  821. 8210  LINE(IP_WX+IP_BX*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,%IP_CL,BF
  822. 8220  SYMBOL(IP_WX+IP_BX*8,IP_WY),IP_CK$,1,1,7
  823. 8230 NEXT
  824. 8240 IF IP_NAME$=IP_BNAME$ THEN 8280
  825. 8250 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_L*8,IP_WY+15),PSET,%IP_CL,BF
  826. 8260 SYMBOL(IP_WX+IP_X*8,IP_WY),RIGHT$(IP_NAME$,IP_L-IP_X),1,1,7
  827. 8270 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,2
  828. 8280 IF IP_ACK=8 THEN GOSUB *IP_BS
  829. 8290 IF IP_ACK=&H7F THEN GOSUB *IP_DEL
  830. 8300 IF IP_ACK=&H1D THEN GOSUB *IP_LEFT
  831. 8310 IF IP_ACK=&H1C THEN GOSUB *IP_RIGHT
  832. 8320 RETURN
  833. 8330 *IP_END
  834. 8340 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,%IP_CL
  835. 8350 RETURN
  836. 8360 *IP_BS
  837. 8370 IF IP_X=<0 THEN RETURN
  838. 8380 IP_A$=KLEFT$(IP_NAME$,IP_J-1)
  839. 8390 IP_B$=KRIGHT$(IP_NAME$,KLEN(IP_NAME$)-IP_J)
  840. 8400 IP_NAME$=IP_A$+IP_B$
  841. 8410 IP_BL=IP_L
  842. 8420 IP_X=LEN(IP_A$):IP_L=LEN(IP_NAME$):IP_J=IP_J-1
  843. 8430 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_BL*8,IP_WY+15),PSET,%IP_CL,BF
  844. 8440 SYMBOL(IP_WX+IP_X*8,IP_WY),IP_B$,1,1,7
  845. 8450 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,2
  846. 8460 RETURN
  847. 8470 *IP_DEL
  848. 8480 IF IP_X>=IP_L THEN RETURN
  849. 8490 IP_A$=KLEFT$(IP_NAME$,IP_J)
  850. 8500 IP_B$=KRIGHT$(IP_NAME$,KLEN(IP_NAME$)-IP_J-1)
  851. 8510 IP_NAME$=IP_A$+IP_B$
  852. 8520 IP_BL=IP_L
  853. 8530 IP_L=LEN(IP_NAME$)
  854. 8540 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_BL*8,IP_WY+15),PSET,%IP_CL,BF
  855. 8550 SYMBOL(IP_WX+IP_X*8,IP_WY),IP_B$,1,1,7
  856. 8560 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,2
  857. 8570 RETURN
  858. 8580 *IP_LEFT
  859. 8590 IF IP_X=<0 THEN RETURN
  860. 8600 IP_J=IP_J-1
  861. 8610 IP_BX=IP_X
  862. 8620 IP_X=LEN(KLEFT$(IP_NAME$,IP_J))
  863. 8630 LINE(IP_WX+IP_BX*8,IP_WY)-(IP_WX+IP_BX*8,IP_WY+15),PSET,%IP_CL
  864. 8640 SYMBOL(IP_WX+IP_BX*8,IP_WY),KMID$(IP_NAME$,IP_J+2,1),1,1,7
  865. 8650 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,2
  866. 8660 RETURN
  867. 8670 *IP_RIGHT
  868. 8680 IF IP_X>=IP_L THEN RETURN
  869. 8690 IP_J=IP_J+1
  870. 8700 IP_BX=IP_X
  871. 8710 IP_X=LEN(KLEFT$(IP_NAME$,IP_J))
  872. 8720 LINE(IP_WX+IP_BX*8,IP_WY)-(IP_WX+IP_BX*8,IP_WY+15),PSET,%IP_CL
  873. 8730 SYMBOL(IP_WX+IP_BX*8,IP_WY),KMID$(IP_NAME$,IP_J,1),1,1,7
  874. 8740 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,2
  875. 8750 RETURN
  876. 8760 *E_TRAP
  877. 8770 CLOSE
  878. 8780 IF ERL=290 THEN PLAYCD=0:RESUME 380
  879. 8790 IF ERL=3870 THEN PLAYCD=0:RESUME 4210
  880. 8800 IF ERL=6730 THEN PLAYCD=0:RESUME 6790
  881. 8810 IF ERL=150 THEN RESUME 180
  882. 8820 IF ERL=6200 THEN RESUME NEXT
  883. 8830 IF ERL=6210 THEN RESUME 6240
  884. 8840 IF ERL=1240 THEN
  885. 8850  GET@A(128,128)-(512,352),PT3%
  886. 8860  LINE(128,192)-(512,289),PSET,7,BF,%1
  887. 8870  SYMBOL(185,232),"指定したファイルはありませんよ?",1,1,7
  888. 8880  LINE(456,256)-(504,280),PSET,%13,B
  889. 8890  CONNECT(457,279)-(457,257)-(503,257),%14
  890. 8900  CONNECT(458,279)-(503,279)-(503,258),%13
  891. 8910  SYMBOL(464,260),"確認",1,1,7
  892. 8920  WHILE MOUSE(2,0)=0:WEND
  893. 8930  MX=MOUSE(0):MY=MOUSE(1)
  894. 8940  IF MX>456 AND MX<504 AND MY>256 AND MY<280 THEN ELSE 8920
  895. 8950  CONNECT(457,279)-(457,257)-(503,257),%13
  896. 8960  CONNECT(458,279)-(503,279)-(503,258),%14
  897. 8970  WHILE MOUSE(2,0):WEND
  898. 8980  PUT@A(128,128)-(512,352),PT3%
  899. 8990  RESUME *MAIN
  900. 9000 ENDIF
  901. 9010 IF ERL=2580 OR ERL=2590 OR ERL=3660 OR ERL=3670 THEN
  902. 9020  GET@A(128,128)-(512,352),PT3%
  903. 9030  LINE(128,192)-(512,289),PSET,7,BF,%1
  904. 9040  SYMBOL(220,232),"メモリが足りません  スミマセン",1,1,7
  905. 9050  GOTO 8880
  906. 9060 ENDIF
  907. 9070 IF ERL=5640 OR ERL=5630 THEN
  908. 9080  GOSUB *WINDOW
  909. 9090  IF ERR=64 AND ERL=5640 THEN SYMBOL(232,232),"上書きしていいですか?",1,1,7:GOTO 9110
  910. 9100  SYMBOL(180,232),"書き込みができませんよ? チェックを!",1,1,7
  911. 9110  M=0
  912. 9120  WHILE M=0
  913. 9130   M=-MOUSE(2,0)-MOUSE(2,1)*2
  914. 9140  WEND
  915. 9150  IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:RESUME 5890
  916. 9160  GOSUB *W_CHECK_YN
  917. 9170  IF YN=1 THEN
  918. 9180   IF ERR=64 AND ERL=5640 THEN KILF=1
  919. 9190   PUT@A(128,128)-(512,352),PT3%:RESUME 5630
  920. 9200  ENDIF
  921. 9210  IF YN=2 THEN PUT@A(128,128)-(512,352),PT3%:RESUME 5890
  922. 9220  GOTO 9110
  923. 9230 ENDIF
  924. 9240 IF ERR=53 THEN RESUME NEXT
  925. 9250 SCREEN 0:CLS:PRINT"エラー行";ERL;" エラー番号";ERR
  926. 9260 MOUSE 5:END
  927.